The present disclosure relates to the information technology field. More specifically, this disclosure relates to the distribution of a service implemented by intra-connected virtual machines.
Virtual (computing) machines are commonly used to emulate physical (computing machines by software on a (host computing environment. Particularly, multiple virtual machines may be intra-connected, in order to communicate among them so as to implement a service (providing a self-contained basic task that may be invoked through a well-defined interface). A typical example is a web application having a web tier (implementing its user interface), an application tier (implementing its processing logic) and a back-end tier (implementing its data storing); in this case, each tier of the web application may be implemented by one or more different virtual machines (in a number suitably scaled according to its workload).
Each service may be deployed on the computing environment as a virtual appliance; the virtual appliance is a software appliance (i.e., a software solution for performing a specific user task being encapsulated in a pre-built, self-contained deployment package), which is designed to run in a virtualized environment. For this purpose, the deployment package of the virtual appliance comprises the definition of its virtual machines; for each virtual machine, the deployment package also comprises a software image (or more), which represents a content of its mass memory with one or more application programs (for implementing the service) and a Just Enough Operating System, or JeOS (i.e., a limited operating system specifically tailored to support the application programs). The deployment of the virtual appliance involves the instantiation of the corresponding virtual machines on the computing environment (according to their definition in the deployment package); the software images (possibly converted into a runtime format that may be recognized by a virtualization layer of the computing environment) are attached to the corresponding virtual machines as virtual disks (emulating corresponding physical disks), so as to cause their booting therefrom. Generally, the correct operation of the virtual machines in the computing environment also requires a suitable configuration thereof; typically, this involves the assignment of new (network) identities to the virtual machines, so that the virtual machines are also to be reconnected for communicating via their new identities.
Different techniques for facilitating the reconnection of the virtual machines individually are known in the art.
For example, an activation engine (such as the “Virtual Solutions Activation Engine”, or VSAE b IBM Corporation, trademarks thereof) may be embedded in each virtual machine. The activation engine is automatically launched at the bootstrap of the virtual machine, and it executes registered scripts that read a configuration file attached to the virtual machine and configures the virtual machine accordingly.
WO-A-2011/069782 (the entire disclosure of which is herein incorporated by reference) instead discloses a method for managing connections in a plug and play fashion. For this purpose, in a connection management structure a connection entry is provided for defining each role based connection between two computing machines; the connection entry defines a socket role (associated with socket attributes representing the information that needs to be provided by the computing machine having the socket role to establish connection with the other computing machine) and a plug role (associated with plug attributes representing the configuration actions that need to be executed by the other computing machine to establish connection with the computing machine having the socket rote).
Moreover, U.S. Pat. No. 7,849,168 (the entire disclosure of which is herein incorporated by reference) discloses a technique for managing a server migration process using a migration destination virtual server; for this purpose, a migration mechanism is used for changing settings of ports of a network switching apparatus according to corresponding transmitted setting information.
Sometimes, the entire service needs to be copied from a (source) computing environment to another (target) computing environment (for example, for migration, maintenance, load-balancing, scaling or backup reasons).
For this purpose, it is possible to deploy the same virtual appliance onto the target computing environment from the corresponding deployment package, again with a configuration of the target computing environment and of the corresponding virtual machines (for their correct operation thereon), and a reconnection of these virtual machines (for communicating via their new network identities). However, any upgrades of the service on the source computing environment (for example, patches applied to the operating system or the application programs of its virtual machines) is lost with the need of their repetition as well on the target computing environment.
Alternatively, it is possible to distribute the service directly from the source computing environment to the target computing environment. For this purpose, at first it is necessary to identify the virtual machines implementing the service on the source computing environment; each virtual machine is then copied onto the target computing environment individually. The target computing environment and the corresponding virtual machines are reconfigured (for their correct operation thereon), and these virtual machines are reconnected (for communicating via their new network identities). However, this does not allow distributing the service as a single entity.
In both cases, it is not possible to implement any versioning of the service as a whole.